A program's efficiency may be a measure of its raw processing speed. However as both hardware performance and user expectations continue to rise rapidly, this sort of efficiency is subordinate to the efficiency of the overall software lifecycle.
Programmers naturally strive for efficiency by attempting to minimize the amount of future effort a program will generate. This often involves tradeoffs among short-term and long-term investments by the programmer, and ease of use and flexibility from the user's perspective.
This chapter discusses programming issues related to code reusability, portability, and user-interface design in the context of TC and C++. Code for implementing simple, portable graphics is included. The chapter concludes with a suggested TC "root" class which may help avoid dynamic memory allocation bugs.